package com.yjs.app.trade.core.util;

import java.io.File;
import java.io.FileNotFoundException;

public class FolderUtil {

	public static String picPhysicalUrl = "C:\\file\\";
	
	/**
	 * 分隔符替换 window下测试通过
	 * 
	 * @param path
	 * @return
	 */
	public static String separatorReplace(String path) {
		return path.replace("\\", "/");
	}
	
	/**
	 * 根据文件路径删除文件，如果路径指向的文件不存在或删除失败则抛出异常。
	 * 
	 * @param path
	 * @return
	 * @throws Exception
	 */
	public static void deleteFile(String path) throws Exception {
		path = separatorReplace(path);
		File file = getFile(path);
		if (!file.delete()) {
//			throw new Exception("由于文件被其他程序锁定，无法删除！");
			System.out.println("文件或文件夹未找到");
		}
	}
	
	/**
	 * 通过路径获得文件， 若不存在则抛异常， 若存在则返回该文件。
	 * 
	 * @param path
	 * @return
	 * @throws FileNotFoundException
	 */
	public static File getFile(String path) throws FileNotFoundException {
		path = separatorReplace(path);
		File file = new File(path);
		if (!file.isFile()) {
//			throw new FileNotFoundException("file not found!");
			System.out.println("文件或文件夹未找到");
		}
		return file;
	}

	/**
	 * 通过路径获得文件夹， 若不存在则抛异常， 若存在则返回该文件夹。
	 * 
	 * @param path
	 * @return
	 * @throws FileNotFoundException
	 */
	public static File getFolder(String path) throws FileNotFoundException {
		path = separatorReplace(path);
		File folder = new File(path);
		if (!folder.isDirectory()) {
			folder=null;
			//throw new FileNotFoundException("folder not found!");
			System.out.println("文件或文件夹未找到");
		}
		return folder;
	}
	
	/**
	 * 根据路径删除文件夹，如果路径指向的目录不存在则抛出异常， 若存在则先遍历删除子项目后再删除文件夹本身。
	 * 
	 * @param path
	 * @throws Exception
	 */
	public static void deleteFolder(String path) throws Exception {
		path = separatorReplace(path);
		File folder = getFolder(path);
		if(folder!=null) {
			File[] files = folder.listFiles();
			for (File file : files) {
				if (file.isDirectory()) {
					deleteFolder(file.getAbsolutePath());
				} else if (file.isFile()) {
					deleteFile(file.getAbsolutePath());
				}
			}
			if (!folder.delete()) { 
//				throw new Exception("由于文件夹被其他程序锁定，无法删除！");
				System.out.println("文件或文件夹未找到");
			}
		}
	}
}
